#include "comm.hpp"
//创建共享内存
static int commShm(int size, int flags)
{
    key_t key = ftok(Path, PROJ_ID);
    if (key < 0)
    {
        perror("ftok");
        return -1;
    }
    int shmid = 0;
    if ((shmid = shmget(key, size, flags)) < 0)
    {
        perror("shmget");
        return -2;
    }
    return shmid;
}

int createShm(int size)//要求创建
{
    return commShm(size,IPC_CREAT|IPC_EXCL|0666);//创建共享内存，有则错误返回，设置权限
}

int destroyShm(int shmid)
{
    int n=shmctl(shmid,IPC_RMID,nullptr);
    if(n<0)
    {
        perror("destroyShm");
        return -1;
    }
    return 0;
}

int getShm(int size)//要求获取
{
    return commShm(size, IPC_CREAT);
}